﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Services;
using System.Web.Script.Services;
using EntitiesLayer.Entities;
using BusinnesLayer.LogicBusiness;
using System.Web.UI.HtmlControls; 
using System.Web.UI.WebControls.WebParts;
using System.Data;

namespace ClinicaSanPablo
{
    
    public partial class RegistroServicioNoConforme : System.Web.UI.Page
    {
        DataTable dt = new DataTable("Area");
        string codServicio;

        private static Combosbl ptb = new Combosbl();
        private static Areabl atb = new Areabl();      
             
        private static System.Web.Script.Serialization.JavaScriptSerializer jsonSerializer = new System.Web.Script.Serialization.JavaScriptSerializer();

        
        [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public static string ComboSede()
        {
            List<Combos> getSede = ptb.GetAllComboSede();
            return jsonSerializer.Serialize(getSede);
        }

        [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public static string ComboUniNegocio()
        {
            List<Combos> getUniNegocio = ptb.GetAllComboUniNegocio();
            return jsonSerializer.Serialize(getUniNegocio);
        }

        [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public static string ComboArea(string codigo){
            List<Combos> getArea = ptb.GetAllComboArea(codigo);          
            return jsonSerializer.Serialize(getArea);
        }

        [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public static string ComboProveedor()
        {
            List<Combos> getProveedor = ptb.GetAllComboProveedor();
            return jsonSerializer.Serialize(getProveedor);
        }

        [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public static string ComboTipoQueja()
        {
            List<Combos> getTipoQueja = ptb.getAllComboTipoQueja();
            return jsonSerializer.Serialize(getTipoQueja);
        }

        [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public static string UpdateSNC(string codSNC, string codSede, string codUnidadNegocio, string codServicio, string codArea, string codProveedor, string codTipoQueja, string descripcionSNC, string numDocEmpleado, string fechaVencimiento)
        {
            try
            {
                ServicioNoConformebl ServicioNoConformebl = new ServicioNoConformebl();

                ServicioNoConforme snc = new ServicioNoConforme
                {
                    CodSNC = codSNC,
                    CodSede = codSede,
                    CodUniNego = codUnidadNegocio,
                    CodServicio = codServicio,
                    CodArea = codArea,
                    CodProveedor = codProveedor,
                    CodTipoQueja = codTipoQueja,                   
                    DesSNC = descripcionSNC,
                    NumDocEmpleado = numDocEmpleado,
                    Dsnc_Fecha_Vencimiento = fechaVencimiento
                };
                ServicioNoConformebl.UpdateSNC(snc);

                var data = new
                {
                    resultado = true
                };
                return jsonSerializer.Serialize(data);
            }
            catch (Exception ex)
            {
                var data = new
                {
                    resultado = false
                };
                return jsonSerializer.Serialize(data);
            }

        }       

        private void generarTabla()
        {
            dt.Columns.Add("Codigo", Type.GetType("System.String"));
            dt.Columns.Add("Area", Type.GetType("System.String"));
            dt.Columns.Add("Jefe", Type.GetType("System.String"));
            dt.Columns.Add("Correo", Type.GetType("System.String"));
            dt.PrimaryKey = new DataColumn[] { dt.Columns[0] };

            Session["dt"] = dt;
        }

        private void quitarRegistro(string codigo)
        {
            DataTable dt = new DataTable();

            dt = (DataTable)Session["dt"];

            DataRow dr;
            
            dr = dt.Rows.Find(codigo);

            dr.Delete();

            gvOtrasAreas.DataSource = dt;
            gvOtrasAreas.DataBind();

            Session["dt"] = dt;
                       
        }

        private void limpiar() {
                        
            txtDescripcionServicioNoConforme.Text = "";
            txtCodigoIdentificadoPor.Value = "";
            txtIdentificadoPor.Text = "";
            txtCodigoSNC.Value = "";
            lblMensajeAdd.Text = "";
            txtFechaVencimiento.Text = "";
            txtplazo.Text = "";
            txtDescripcionServicioNoConforme.Focus();
            SER001.Checked = true;
            SER002.Checked = false;
            SER003.Checked = false;             
            gvOtrasAreas.DataSource = null;
            gvOtrasAreas.DataBind();
            Session["dt"] = null;
            generarTabla();
        }
           
        protected void Page_Load(object sender, EventArgs e)
        {

            if (Page.IsPostBack)
            {
                return;
            }

            generarTabla();
        }

        protected void btnAgregar_Click(object sender, EventArgs e)
        {
            string cmbOtraArea = (string)Request.Form["ctl00$master$cmbOtrasAreasInvolucradas"];

            DataTable dt = new DataTable();
            dt = (DataTable)Session["dt"];

            DataRow dr;

            dr = dt.NewRow();

            if (dt.Rows.Find(cmbOtraArea) == null)
            {
                lblMensajeAdd.Text = "";
                dr["Codigo"] = atb.BuscarArea(cmbOtraArea).Cod_area;
                dr["Area"] = atb.BuscarArea(cmbOtraArea).Des_area;
                dr["Jefe"] = atb.BuscarArea(cmbOtraArea).Jef_area;
                dr["Correo"] = atb.BuscarArea(cmbOtraArea).Email_area;
                dt.Rows.Add(dr);             
                gvOtrasAreas.DataSource = dt;
                gvOtrasAreas.DataBind();                
                Session["dt"] = dt;                                        
            }
            else
            {
                lblMensajeAdd.Text = "* No se puede ingresar la misma area";
            }
            
        }        
        
        protected void btnRegistrar_Click(object sender, EventArgs e)
        {
            string cmbSede = (string)Request.Form["ctl00$master$cmbSede"];
            string cmbUnidadNegocio = (string)Request.Form["ctl00$master$cmbUnidadNegocio"];
            string cmbAreaInvolucrada = (string)Request.Form["ctl00$master$cmbAreaInvolucrada"];
            string cmbProveedorInvolucrado = (string)Request.Form["ctl00$master$cmbProveedorInvolucrado"];
            string cmbTipoQueja = (string)Request.Form["ctl00$master$cmbTipoQueja"];
 
            if (SER001.Checked == true)
            {
                codServicio = Convert.ToString(SER001.ID);
            }
            else if (SER002.Checked == true)
            {
                codServicio = Convert.ToString(SER002.ID);
            }
            else if (SER003.Checked == true)
            {
                codServicio = Convert.ToString(SER003.ID);
            }

            ServicioNoConformebl ServicioNoConformebl = new ServicioNoConformebl();
            ServicioNoConforme insertsnc = new ServicioNoConforme();

            ServicioNoConforme.Item Item = new ServicioNoConforme.Item();
            List<ServicioNoConforme.Item> ListaItems = new List<ServicioNoConforme.Item>();

            insertsnc.CodSNC = "SNC000" + ServicioNoConformebl.GetSecuencia();
            lblcodSNC.Value = insertsnc.CodSNC;
            insertsnc.DesSNC = txtDescripcionServicioNoConforme.Text;
          
            insertsnc.NumDocEmpleado = txtCodigoIdentificadoPor.Value;
            insertsnc.CodSede = cmbSede;
            insertsnc.CodUniNego = cmbUnidadNegocio;
            insertsnc.CodServicio = codServicio;
            insertsnc.CodArea = cmbAreaInvolucrada;
            insertsnc.CodProveedor = cmbProveedorInvolucrado;
            insertsnc.CodTipoQueja = cmbTipoQueja; 
            insertsnc.FechaRegistroSNC = Convert.ToDateTime(DateTime.Now.ToShortDateString());
            insertsnc.Rrec_Usuario_Creacion = Session["id_usuario"].ToString();
            
            if (FPL1.Checked == true) {
                insertsnc.Dsnc_Fecha_Vencimiento = Convert.ToString(DateTime.Now.AddDays(Convert.ToInt32(txtplazo.Text)));
            }
            if (FPL2.Checked == true) {
                insertsnc.Dsnc_Fecha_Vencimiento = txtFechaVencimiento.Text;
            }                     

            DataTable dt = new DataTable();
            dt = (DataTable)Session["dt"];
           
            foreach (DataRow dr in dt.Rows)
            {
                Item = new ServicioNoConforme.Item();
                Item.CodOtraArea = Convert.ToString(dr["Codigo"]);

                ListaItems.Add(Item);
            }

            insertsnc.ListaItems = ListaItems;

            ServicioNoConformebl.InsertSNC(insertsnc);

            string script = @"<script type='text/javascript'> alert('Se registro correctamente el Servicio No Conforme');</script>";
            ScriptManager.RegisterStartupScript(this, typeof(Page), "alerta", script, false);

            limpiar();

        }

        protected void gvOtrasAreas_RowDeleting(object sender, GridViewDeleteEventArgs e) 
        {
            string codigo = (gvOtrasAreas.Rows[e.RowIndex].Cells[0].Text).ToString();

            quitarRegistro(codigo);
            
        }       

        [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public static string Enviar_Correo(string EGerente, string EA1, string EA2, string EA3, string EA4, string codSNC)
        {

            Correobl enviacorreo = new Correobl();
            Correo bp = enviacorreo.ConsultaTipoCorreo("2");
            System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage();
            // Dirección de destino
            string destinatario = "";
            destinatario += EGerente;
            destinatario += (EA1 != "") ? "," + EA1 : "";
            destinatario += (EA2 != "") ? "," + EA2 : "";
            destinatario += (EA3 != "") ? "," + EA3 : "";
            destinatario += (EA4 != "") ? "," + EA4 : "";
            if (!string.IsNullOrEmpty(destinatario))
                message.To.Add(destinatario);
            // Asunto 
            message.Subject = bp.TituloCorreo;
            // Mensaje 
            message.Body = bp.DetalleCorreo + " Su código de Servico No Conforme es: " + codSNC + "http://localhost:4640/RegistroServicioNoConforme.aspx"; 

            System.Net.Mail.SmtpClient smpt = new System.Net.Mail.SmtpClient();
            smpt.Send(message);

            var data = new
            {
                resultado = true
            };
            return jsonSerializer.Serialize(data);
           
           
        }

    }


}